# 练习：创建系统用户
# 需求
#   编写一个程序(函数)，实现创建用户的功能 useradd xxx
#   提示用户输入 用户名
#   随机生成 8位密码     echo 密码 | passwd --stdin 用户
#   创建用户并设置密码
#   将用户相关信息保存到指定文件
from string import ascii_letters, digits
import random, subprocess
def randpass(n=8):
    data = ascii_letters + digits  # 大小写字母和数字
    passwd = ""  # 记录最终的密码
    for i in range(n):  # n: 生成密码的长度
        tmp = random.choice(data)
        passwd += tmp
    return passwd
def adduser(name):
    res=subprocess.run(f"id {name} &> /dev/null",shell=True)
    if res.returncode == 0:  # id成功,用户名存在
        print("该用户已存在")
    else:  # 用户名不存在，可以创建
        subprocess.run(f"useradd {name}", shell=True)
        passwd = randpass()  # 默认生成8为密码
        subprocess.run(f"echo {passwd}|passwd --stdin {name}", shell=True)
        with open("/opt/user.data", mode="a") as fw:
            fw.write(f"user:{name}   passwd:{passwd}\n")
if __name__ == '__main__':
    # user1~user10
    user_list = [f"user{i}" for i in range(1, 11)]
    for username in user_list:
        adduser(username)

    # username = input("username: ")
    # adduser(username)  # name = username
